import os
from nfa_visualizer import create_nfa_with_data
from dfa_visualizer import create_dfa_with_data

def get_nfa_data():
    """返回NFA数据 - 完全硬编码"""
    return {
        'states': '{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}',
        'alphabet': '{a, b, c, d}',
        # 硬编码的转换字典
        'transitions_dict': {
            (0, 'a'): {1},
            (1, 'ε'): {5},
            (2, 'b'): {3},
            (3, 'ε'): {5},
            (4, 'ε'): {0, 2},
            (5, 'ε'): {10},
            (6, 'c'): {7},
            (7, 'ε'): {11},
            (8, 'd'): {9},
            (9, 'ε'): {11},
            (10, 'ε'): {6, 8}
        },
        'start_state': '{4}',
        'accept_states': '{11}',
        'output_file': 'nfa_graph'
    }

def get_dfa_data():
    """返回DFA数据 - 完全硬编码"""
    return {
        'states': '{0, 1, 2, 3, 4}',
        'alphabet': '{a, b, c, d}',
        # 硬编码的转换字典
        'transitions_dict': {
            0: {'a': 1, 'b': 2},
            1: {'c': 3, 'd': 4},
            2: {'c': 3, 'd': 4}
        },
        'start_state': '{0}',
        'accept_states': '{3, 4}',
        'output_file': 'dfa_graph'
    }

def main():
    print("=== 自动机可视化工具 ===")
    print("正在生成可视化图像...")
    
    # 创建输出目录
    os.makedirs('output', exist_ok=True)
    
    # 生成NFA图像
    print("\n1. 生成NFA图像...")
    nfa_data = get_nfa_data()
    nfa_success = create_nfa_with_data(nfa_data)
    
    # 生成DFA图像
    print("\n2. 生成DFA图像...")
    dfa_data = get_dfa_data()
    dfa_success = create_dfa_with_data(dfa_data)
    
    # 结果汇总
    print("\n=== 生成结果 ===")
    if nfa_success:
        print(f"✅ NFA图像生成成功: output/{nfa_data['output_file']}.png")
    else:
        print("❌ NFA图像生成失败")
        
    if dfa_success:
        print(f"✅ DFA图像生成成功: output/{dfa_data['output_file']}.png")
    else:
        print("❌ DFA图像生成失败")
    
    print("\n可视化完成！请查看output文件夹中的图像文件。")

if __name__ == "__main__":
    main()